package cn.iocoder.yudao.module.call.enums;

import cn.hutool.core.util.ArrayUtil;
import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;

@Getter
@AllArgsConstructor
public enum CmTaskStatusEnum {

    /**
     * 2009：准备，2000:启动中，2001：运行中，2002：已暂停，2003：已结束，2004：已终止
     */

    // 执行完毕
    FINISH(0, 2003),

    // 等待执行
    WAITING(1, 2009),

    //启动中  cm的一个中间状态
    STARTING(9, 2000),

    // 执行错误
    ERROR(2, 2003),

    // 暂停
    PAUSE(3, 2002),

    // 手动停止
    STOP(4, 2004),

    // 执行中
    RUNNING(9, 2001),
    ;

    /**
     * 编码
     */
    private final Integer localStatus;

    private final Integer status;

    public static Integer getStatusByLocalStatus(Integer localStatus) {
        return ArrayUtil.firstMatch(o -> o.getLocalStatus().equals(localStatus), values()).getStatus();
    }

    public static Integer getLocalStatusByStatus(Integer status) {
        return ArrayUtil.firstMatch(o -> o.getStatus().equals(status), values()).getLocalStatus();
    }

    /**
     * 根据localStatus判断是否为停止状态
     * @param status
     * @return
     */
    public static Boolean isStopStatusByLocalStatus(Integer status) {
        return FINISH.getLocalStatus().equals(status) || ERROR.getLocalStatus().equals(status) || PAUSE.getLocalStatus().equals(status) || STOP.getLocalStatus().equals(status);
    }

    ;
}
